package com.rizhov.iterators;

import com.rizhov.graph.Graph;
import com.rizhov.graph.GraphEdge;
import com.rizhov.gui.MainWindow;

/** Итератор вершин реализует интерфейс итератора графа и предоставляет
 * пользователю возможность "проходить" по вершинам в графе, получая данные вершины
 * , также предоставляется возможность доступа сразу к последней и первой вершинам*/

public class VertexIterator implements GraphIterator {

    private Graph graph = Graph.getInstance();
    private int currentIndex = 0;
    private Object currentData = null;

    public VertexIterator() {
	MainWindow.iteratorStartIndex = -1;
	MainWindow.iteratorEndIndex = -1;
    }

    @Override
    public void next() {
	currentIndex++;
    }

    @Override
    public void setToBegin() {
	currentIndex = 0;
    }

    @Override
    public void setToEnd() {
	currentIndex = graph.getVertexCount() - 1;
    }

    @Override
    public void setData(Object newData) {
	graph.setVertexData(newData, graph.getVertexData(currentIndex));
    }

    @Override
    public Object getData() {
	return graph.getVertexData(currentIndex);
    }

    @Override
    public GraphEdge getEdge() {
	return null;
    }
}
